#ifndef WIDGET_H
#define WIDGET_H

#include <QtWidgets>
#include <QWidget>
#include <errno.h>
#include <QUdpSocket>
#include <QTcpSocket>
#include <QHostAddress>
#include <QCoreApplication>
#include <QJsonParseError>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QStringList>
#include <QDebug>
#include <QString>
#include <QJsonParseError>
#include <QFileDialog>
#include <QMessageBox>
#include <QDialog>
#include <QMessageBox>
#include <QFileInfo>
#include <QFile>               // 用于文件操作
#include <QCryptographicHash>  // 用于MD5计算（Qt加密哈希功能）
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    //Widget(QWidget *parent = nullptr);
    explicit Widget(QWidget *parent = 0);
    ~Widget();
private slots:
    //发送广播包，搜索设备
    void on_find_btn_clicked();
    // 处理接收到的UDP数据
    void onReadyRead();
    //TCP客户端
    void on_connect_btn_clicked();
    //文件信息
    void filerInfoFlog();
    //发送升级包
    void on_pushButton_clicked();
    //读取TCP发来的数据
    void readTcpSlot();
    //启动设备升级
    void on_update_btn_clicked();

private:
    Ui::Widget *ui;
    QUdpSocket *udpSocket;      // UDP套接字
    QTcpSocket *client;         // TCP套接字对象
    QTcpSocket *UPsocket;         //用来接收TCP发来的消息
    QHostAddress senderAddr;    // 发送方地址
    quint16 senderPort;         // 发送方端口
    QString readPath;           //文件路径
    QByteArray tcpBuffer;  // 用于缓存不完整的JSON数据

};
#endif // WIDGET_H
